//------------------------------------------------------------------------------
//	قȂʒuɂ2̓_ABԂ̋擾
//	@Ax	_AxW
//	@Ay	_AyW
//	@Bx	_BxW
//	@By	_ByW
//------------------------------------------------------------------------------
function GetGapLength(Ax,Ay,Bx,By){
	return ( ( Bx - Ax ) ^ 2 + ( By - Ay ) ^ 2 ) ^ 0.5;
}

//------------------------------------------------------------------------------
//	_AقȂʒuɂ_Bւ̐Ίpx擾
//	@Ax	_AxW
//	@Ay	_AyW
//	@Bx	_BxW
//	@By	_ByW
//------------------------------------------------------------------------------
function GetGapAngle(Ax,Ay,Bx,By){
	return atan2( By - Ay, Bx - Ax );
}

//------------------------------------------------------------------------------
//	_A炠鋗AΊpxɂ_BxW擾
//	@Ax		_AxW
//	@GapLength	_B܂ł̋
//	@GapAngle	_Bւ̐Ίpx
//------------------------------------------------------------------------------
function GetGapX(Ax,GapLength,GapAngle){
	return Ax + GapLength * cos(GapAngle);
}

//------------------------------------------------------------------------------
//	_A炠鋗AΊpxɂ_ByW擾
//	@Ay		_AyW
//	@GapLength	_B܂ł̋
//	@GapAngle	_Bւ̐Ίpx
//------------------------------------------------------------------------------
function GetGapY(Ay,GapLength,GapAngle){
	return Ay + GapLength * sin(GapAngle);
}

//------------------------------------------------------------------------------
//	^ꂽpx0ȏ360ɂĕԂ
//	@Angle	px
//------------------------------------------------------------------------------
function RollAngle(Angle){
	return asin( sin(Angle) );
}

//------------------------------------------------------------------------------
//	̒l_ȐlԂ
//	@Min		ŏl
//	@Max		ől
//	@Exception	Ol
//------------------------------------------------------------------------------
function rand_intNoExcept(Min,Max,Exception){
	let x = 0;
	
	x = rand_int(Min,Max);
	
	while(x == Exception){
		x = rand_int(Min,Max);
	}
	
	return x;
}

//------------------------------------------------------------------------------
//	Ɛx_֐(z`ŕԂB)
//	@Min		ŏl
//	@Max		ől
//	@Division	
//------------------------------------------------------------------------------
function rand2(Min,Max,Division){
	let x = [];
	let i = 0;
	let inc = (Max - Min) / Division;
	
	ascent(i in 0..Division){
		x = x ~ [i];
	}
	
	ascent(i in 0..Division){
		x[i] = rand(Min + inc * i,Min + inc * (i + 1) );
	}
	
	return x;
}

//------------------------------------------------------------------------------
//	px␳z[~O֐
//	@X		݈ʒuxW
//	@Y		݈ʒuyW
//	@ToX		ǔڕWxW
//	@ToY		ǔڕWyW
//	@N_Angle	݂̊px
//	@DAngle		px␳ʍől
//------------------------------------------------------------------------------
function AngleSearch(X,Y,ToX,ToY,N_Angle,DAngle){
	let TargetAngle = atan2(ToY - Y,ToX - X);
	let ICross = cos(N_Angle - TargetAngle);
	let CCross = cos(DAngle);
	
	if(ICross < CCross){
		let LCross = cos(N_Angle - DAngle - TargetAngle);
		let RCross = cos(N_Angle + DAngle - TargetAngle);
		if(LCross > RCross){
			N_Angle -= DAngle;
		}
		else{
			N_Angle += DAngle;
		}
	}
	else{
		N_Angle = TargetAngle;
	}
	return N_Angle;
}